SpringBoot集成Dubbo启用gRPC协议 您所在的位置:网站首页 dubbo grpc SpringBoot集成Dubbo启用gRPC协议

SpringBoot集成Dubbo启用gRPC协议

#SpringBoot集成Dubbo启用gRPC协议| 来源: 网络整理| 查看: 265

文章目录前言项目结构代码示例父工程api moduleservice module注意事项区别

本文记录下SpringBoot集成Dubbo启用gRPC协议,以及与原生 gRPC 在代码编写过程中的区别。下面还有投票,帮忙投个票👍

前言

Dubbo 在 2.7.5 版本开始支持原生 gRPC 协议,对于计划使用 HTTP/2 通信或者期望 gRPC 协议支持服务治理能力的,都可以考虑接入 Dubbo 体系启用 gRPC 协议。

由于官网给的 代码示例 是基于 spring,现在基本上都是基于SpringBoot开发,所以本文提供一下 SpringBoot 的代码示例。

此外还会简单说明 Dubbo 支持的原生 gRPC 协议与原生 gRPC 协议在代码开发时的区别。

如果对gRPC协议不了解的,后续文章会有更新,请持续关注。

项目结构

根据现在微服务开发的常见方式,先搭建一个项目,结构如下

在这里插入图片描述

这样的项目结构可以将服务的声明和实现隔离开,如果有 client 调用,直接添加api module 的依赖即可。

代码示例

项目结构确定好后需要做三件事

在项目中需要用到 grpc 和 dubbo 相关依赖,所以在父工程中的 pom.xml 文件添加两者的 BOM。gRPC 支持的序列化协议为 protobuf,我们在 api module 下添加 gRPC 所需依赖、插件以及 proto IDL文件。在 service module 添加相关配置并进行 api service 的实现。

详细代码如下:

父工程

父工程中的 pom.xml 文件添加 grpc 和 dubbo 的 BOM。pom.xml

4.0.0com.demonava0.0.1-SNAPSHOTpomnavaDemo project for Spring Boot1.8UTF-8UTF-83.1.71.44.12.6.11nava-apinava-serviceio.grpcgrpc-bom${grpc.version}pomimportorg.springframework.bootspring-boot-dependencies${spring-boot.version}pomimportorg.apache.dubbodubbo-bom${dubbo.version}pomimportcom.demonava-api0.0.1-SNAPSHOTcom.demonava-service0.0.1-SNAPSHOTorg.apache.maven.pluginsmaven-compiler-plugin3.8.11.81.8UTF-8 api module

在 api module 中的 pom.xml 文件添加 dubbo 、gRPC 所需依赖、插件。pom.xml

4.0.0com.demonava0.0.1-SNAPSHOT../pom.xmlnava-apinava-apiapi 模块,对外提供的 APIio.grpcgrpc-nettyio.nettynetty-codec-http2io.nettynetty-handler-proxyio.grpcgrpc-netty-shadedio.grpcgrpc-protobufio.grpcgrpc-stuborg.apache.dubbodubbo-commonkr.motd.mavenos-maven-plugin1.7.1os-maven-plugininitializedetectorg.xolstice.maven.pluginsprotobuf-maven-plugin0.6.1com.Google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}grpc-javaio.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}dubbo-grpcorg.apache.dubbodubbo-compiler0.0.1org.apache.dubbo.gen.grpc.DubboGrpcGeneratorprotobuf-maven-plugincompilecompile-custom

在main文件夹下面创建proto文件夹,以及 DemoService.proto 文件。

在这里插入图片描述

DemoService.proto

syntax = "proto3";option java_multiple_files = true;option java_package = "com.demo.nava";option java_outer_classname = "DemoServiceProto";option objc_class_prefix = "DSP";// The greeting service definition.service DemoService {// Sends a greetingrpc service (RequestData) returns (ResponseData) {}}// The request message containing the user's name.message RequestData {string name = 1;}// The response message containing the greetingsmessage ResponseData {string message = 1;} service module

在 service module 中的 pom.xml 文件添加 api module 的依赖以及 dubbo 其他依赖。

pom.xml



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有